Efficient bump mapping using height maps

ABSTRACT

A method for generating bump map data substantially in real time for use in a 3-dimensional computer graphics system. Data is received which defines an area to which a texture is to be applied. Texture data to apply to the area is also received. This data includes surface height data. A set of partially overlapping samples of texture data are then filtered and surface tangent vectors derived therefrom. A bump map surface normal is then derived from the tangent vectors.

[0001] This invention relates to a method and apparatus for generatingbump map data for use in a 3 dimensional computer graphics system.

BACKGROUND TO THE INVENTION

[0002] In the field of 3D computer graphics, detail is often added tootherwise smooth objects though the use of Bump Mapping, which wasintroduced by Blinn in his paper “Simulation of Wrinkled Surfaces”(SIGGRAPH 1978, pp286-292). This operates by perturbing, on apixel-by-pixel basis, an object's otherwise ‘smoothly’ varying surfacenormal vector. Because the surface's normal vector is used whencomputing the shading of that surface, its modification can give theappearance of bumps. FIG. 1 shows a surface normal being perturbed.

[0003] In Blinn's technique, each perturbation is computed by firsttaking derivates of a bump displacement texture or ‘height map’ andsubsequently applying it to the original surface normal and surfacetangent vectors. The height map is a simple array of scalar values thatgives the ‘vertical’ displacement or ‘height’ of a surface at regulargrid points relative to that surface. Typically these are represented bymonochromatic image data, e.g. a bitmap, with the brightness of anypixel being representative of the ‘height’ at that point. Standardtexture mapping practices are used to access the height data. The normalperturbations and lighting calculations are done in global or modelspace. FIG. 8a shows the application of Blinn's method to an‘illuminated’ flat surface.

[0004] A more ‘hardware friendly’ method was later developed by Peercyet al (“Efficient Bump Mapping Hardware”, SIGGRAPH 1997, pp 303-306,(also U.S. Pat. No. 5,949,424)). This directly stores perturbed surfacenormals in a texture map, often called a normal map. Unlike Blinn'smethod, these normals are defined in a local tangential coordinatespace, which can be likened to the representation of parts of theearth's surface on a page in an atlas. In Peercy's technique, the lightsused for shading are also transformed into this tangential space andthus the shading calculations are also computed locally. This processsignificantly reduces the number of calculations required when usingbump mapping. It has become popular in recent 3D hardware systems and issometimes known as ‘Dot3 bump mapping’.

[0005] To minimize the texture memory and, more importantly, memorybandwidth required by this procedure, it is desirable to compress thenormal maps. Unfortunately many of the commonly used texture compressionschemes are not suitable as they cause a loss of information that, whenapplied to the special case of normal maps, can cause an unacceptabledegradation in image quality. Two methods that are specifically tailoredto normal maps, however, are described in our International patentapplication No. WO9909523—these typically still use 16 bits to representeach surface normal.

[0006] This then leaves the task of generating the normal map. Onepopular method again uses an initial height map, as originally describedby Blinn. From that height map, a normal map can then be pre-computed,prior to rendering, by taking the cross product of the local derivativevectors of the height function sampled at regular positions. For caseswhere texture filtering is required, e.g. those based on the well-knownMIP mapping techniques, the height map should be repeatedly down-sampledand the associated normal map regenerated to produce the multiple MIPmap levels. Problems can arise, however, when applying the texturefiltering techniques, e.g. bilinear or trilinear filtering, to normalmaps.

[0007] It should be noted that whereas the height map could be ofrelatively low precision—often as low as, say 8 or even 4 bits perpixel—the normal map may require 16 to 32 bits per pixel. Thepre-processing steps of generating and compressing the normal map andthe process of using the compressed normal map in 3D rendering are shownin FIG. 2. In the generation phase a height map 2 is used for normal mapgeneration 4. An optional compression step 6 may then be used to producean output map 8. in the use of the map 8, an optional decompression stepis first performed on-the-fly before the map is used by shadingcalculations 12 to provide pixel data to an output frame buffer 14.

[0008] Also well known in the art is the aspect of texture filtering,primarily the application of bilinear or trilinear filtering, the latteras invented by Williams (“Pyramidal Parametrics”, Lance Williams,Computer Graphics, Vol. 7, No. 3, July 1983, pp 1-11). Bilinearfiltering is briefly discussed below, since trilinear filtering is justthe blending of two bilinear operations.

[0009] A 2D texture can be considered to be a vector function of 2variables (U, V). For simplicity in this discussion, we will assumethat, for an N×N pixel texture, the values of U and V range from 0 to N.When bilinear filtering is applied, the pixel, or “texel”, values storedin the texture can be considered to be representative of the points inthe centres of the respective texels, i.e. at coordinates (i+0.5,j+0.5), where i and j are integers and represent the texel coordinate ofthe particular texel. This is illustrated in FIG. 3 for texel (i,j), thecentre of which is indicated by ‘20’. At this point in the texture,bilinear filtering will return the colour of that texel. Similarly,sampling at locations ‘21’, ‘22’, and ‘23’ will return the colours oftexels (i+1,j),(i,j+1), and (i+l ,j+1) respectively. Now consider anysampling location within the square formed by ‘20’, ‘21’, ‘22’, and‘23’, such as point ‘24’. Such a point has texture coordinates(u_(s),v_(s)) where i+0.5≦u_(s)<i+1.5 and j+0.5≦v_(s)<j+1.5. The texturevalues for any point in the square will be formed from a bilinear blendof the four surrounding texels.

[0010] In particular, the process used in the art will be some simplevariation of the following:

[0011] U′:=Us−0.5;//Place stored texel value at centre of texel

[0012] V′:=Vs−0.5;

[0013] Ui:=floor(U′);

[0014] Vi:=floor(V′);

[0015] Ublend:=U′−Ui;

[0016] Vblend:=V′−Vi;

[0017] //Do 2 horizontal linear blends

[0018] Colour0:=LinearBlend(Texel(Ui, Vi), Texel(Ui+1, Vi), Ublend);

[0019] Colour1:=LinearBlend(Texel(Ui, Vi+1), Texel(Ui+1, Vi+1), Ublend);

[0020] //Do 1 vertical linear blend

[0021] Result:=LinearBlend(Colour0, Colour1, Vblend);

[0022] The Ublend and Vblend values are thus in the range [0 . . . 1),and can be most conveniently represented by a fixed point number of,say, 8 to 16 bits precision.

[0023]FIG. 4a shows hardware, typical in the art, that performs thefirst steps of the above bilinear algorithm. The requested sampleposition is input, ‘50’, and the positions adjusted by ½ a texel, ‘51’via a subtraction. The ‘floors’ of the coordinate values are computed,‘52’, and these define the texel integer coordinates, ‘53’, for the topleft texel of the required set of 4 texels. The values are alsosubtracted, ‘54’, from previous values to produce the blending factorsfor the bilinear operation, ‘55’.

[0024] It should be noted that the colours in 3D computer graphics areusually 4-D entities, having Red, Green, Blue, and Alpha (i.e.transparency) components. When the bilinear blending described above isperformed, all four components of the various colour values are operatedon in parallel. This is shown in the second stage of the bilinearoperation in FIG. 4b. The integer texel coordinates computed in ‘53’,are used to access the four neighbouring texels, ‘60’ thru ‘63’. Each ofthese has its own Red, Green, Blue, and Alpha components. In theexample, there are four (usually identical) bilinear units, ‘65’ thru‘68’, each of which computes one of the four colour channels using theblend factors, ‘55’. The individual scalar results are then recombinedinto the one resulting colour, ‘69’.

[0025] Another known aspect of 3D computer graphics is that of fittingsmooth surfaces through or near a set of control points. In particularwe are interested in two types known as uniform B-spline and Beziersplines, as described in literature such as “Computer Graphics.Principles and Practice” (Foley et al) or “Curves and Surfaces for CAGD.A practical guide” (Farin).

[0026] Of particular interest to this application is the case of abi-quadratic B-spline which has C1 continuity (i.e. continuous firstderivative). A bi-quadratic B-spline also has the property that, for anypoint on the surface, a sub-grid of 3×3 control points is needed toevaluate that point and/or derivatives at that point. A one-dimensionalslice though a section of a quadratic B-spline is shown in FIG. 5. Thepoints, ‘80’, ‘81’, and ‘82’ can be considered to be three adjacentcontrol points in a row of the grid. The region of the curve between‘85’, and ‘86’ depends only on these three control values (and theneighbouring 6 values in the 3×3 sub-grid in the case of a bi-quadraticsurface).

[0027] One popular way of evaluating such a curve is to first convert itto the equivalent Bezier representation, i.e. a different set of 3control points, and then apply the de Casteljau algorithm which usesrepeated linear interpolation (see Farin). For the simple case ofquadratic curves, this amounts to using a new set of control pointswhich are ‘88’, ‘81’ (i.e., it is re-used), and ‘89’. Points ‘88’ and‘89’ are just the mid points of the connecting line segments and couldbe found by simple averaging.

[0028] For the conversion of a bi-quadratic B-spline surface, the 3×3grid of control points can be replaced by an equivalent set of 3×3Bezier control points. An example showing the situation for abi-quadratic surface is shown, in plan form, in FIG. 6. The original 9B-spline control points, one example of which is shown by ‘100’, areconverted into the equivalent Bezier control points, such as ‘101’.Stating this more precisely, if the grid of 3×3 B-spline points are:$\begin{bmatrix}a & b & c \\d & e & f \\g & h & k\end{bmatrix}\quad$

[0029] then the equivalent set of Bezier points are computed from:$\begin{matrix}\begin{matrix}{\begin{bmatrix}a^{\prime} & b^{\prime} & c^{\prime} \\d^{\prime} & e^{\prime} & f^{\prime} \\g^{\prime} & h^{\prime} & k^{\prime}\end{bmatrix} = {{\begin{bmatrix}\frac{1}{2} & \frac{1}{2} & 0 \\0 & 1 & 0 \\0 & \frac{1}{2} & \frac{1}{2}\end{bmatrix}\begin{bmatrix}a & b & c \\d & e & f \\g & h & k\end{bmatrix}}\begin{bmatrix}\frac{1}{2} & 0 & 0 \\\frac{1}{2} & 1 & \frac{1}{2} \\0 & 0 & \frac{1}{2}\end{bmatrix}}} \\{= \begin{bmatrix}\frac{a + b + d + e}{4} & \frac{b + e}{2} & \frac{b + c + e + f}{4} \\\frac{d + e}{2} & e & \frac{e + f}{2} \\\frac{d + e + g + h}{4} & \frac{e + h}{2} & \frac{e + f + h + k}{4}\end{bmatrix}}\end{matrix} & {{Equation}\quad 1}\end{matrix}$

[0030] Referring again to FIG. 6, the region of interest is the central‘square’, i.e. a position specified by (u,v), where 0≦u,v≦1. In the caseof a bi-quadratic surface, one method based on de Casteljau would be tobi-linearly interpolate sets of 2×2 neighbouring control points, using(u,v) as weights, to produce a new set of 2×2 intermediate controlpoints. One of the four sets of 2×2 intermediate control points isindicated by ‘102’. These four results are, in turn, bilinearlyinterpolated, again using the (u,v) weights, to produce the surfacepoint. If tangents to the surface are required, a method such as givenby Mann and Rose (“Computing values and derivatives of Bezier andB-spline tensor products”, CAGD, Vol 12, February 1995) can be used. Forthe bi-quadratic case, this can be done by performing additional linearinterpolations using the 2×2 intermediate control values. Finally,taking the cross product of these tangents generates the surface normal.

[0031] The height map defines ‘height’ values only at certain samplelocations and so a means of computing the height surface at other pointsis required. In particular, bump mapping requires the surface normalwhich, in turn, usually implies the need for surface tangents. Blinnpoints out that the surface height is not actually required and proposesa function that only computes tangents. He notes that in order to avoiddiscontinuities in the shading, his tangent functions are continuous.Using the 3×3 grid of height samples shown in 6, Blinn's functionperforms 3 bilinear blends respectively of the top left, top right, andbottom left neighbours, and then computes the differences of the topleft and top right result and the top left and bottom left result aspart of the tangent generation.

[0032] Although Blinn's function results in a continuous normal, itsderivative can have discontinuities. Unfortunately, the human visualsystem is very sensitive to changes in the derivative of imageintensity, and so ‘artefacts’ can be seen. The method also tends toemphasise the underlying grid of the height map, which can be seen inFIG. 8a. (For the sake of comparison, FIG. 8b illustrates the resultfrom a preferred embodiment of the present invention).

[0033] Although the introduction of Peercy et al's pre-perturbed normalmap method makes bump mapping more practical in real-time hardware, itstill requires ‘large’ texture formats as well as the separatepre-processing step to convert a height map to normal map. The ‘large’texture formats consume valuable bandwidth as well as memory and cachestorage and, although special normal map compression techniques exist,these formats are still often larger than the original source heightmap. Also filtering of the normal map may also be problematic.

[0034] A further limitation of Peercy et al's technique is that dynamicbump mapping, i.e. where the bump heights are computed frame-by-frame,is far more difficult to achieve. For example, the height values may begenerated as the result of a separate rendering pass. The pre-processingstep, including generation of the various MIP map levels, may take toomuch time to allow real-time rendering.

[0035] Finally, it is beneficial to use a height function with C2 (orhigher) continuity so that the normal interpolation is C1 (or higher).In particular, it is important to have an inexpensive means of producingthis function.

SUMMARY OF THE INVENTION

[0036] We have appreciated that it is possible to implement, inhardware, an additional set of functions that provides an efficientmeans for direct transformation of a height map into filtered perturbedsurface normals that have C1 continuity. These normals can subsequentlybe used for various rendering purposes such as per-pixel lighting. Inparticular, we have devised a method which, by re-using colour texturefiltering hardware that is ubiquitous in today's graphics systems in anew way with the addition of some small processing units, achieves thefunctions needed to compute the normal from a smooth surface controlledby a set of heights. Thus the data can be generated substantially inreal time.

[0037] The filtered surface normals are created ‘on demand’ and are notstored. This provides the joint benefits of reducing the amount oftexture data and bandwidth needed for bump mapping, as well asovercoming some of the issues with the filtering of normal maps. Thisfeature is also important when using dynamic height maps in real-timerendering since a pre-processing step may be prohibitive.

[0038] Embodiments of the invention keep the advantages of computingbump map-based shading in local tangent space as described by Peercy etal, (although it is not restricted to doing so), with the convenience ofdirectly using Blinn's height map but with the option of using afunction with higher continuity.

[0039] Preferred embodiments of the invention will now be described indetail by way of example with reference to the accompanying diagrams inwhich:

[0040]FIG. 1 shows the process of perturbing surface Normals asdescribed by Blinn;

[0041]FIG. 2 shows a flow chart of the pipeline used for Peercy et al'smethod described above;

[0042]FIG. 3 shows the relationship of bilinear filtering of a textureto the texels of that texture;

[0043]FIG. 4a shows an overview coordinate calculation device in typicalprior art bilinear hardware;

[0044]FIG. 4b shows an overview of prior art hardware that applies thebilinear blending to the addressed texels;

[0045]FIG. 5 shows a segment of a piecewise quadratic B-spline curve, orequivalently, a section through a bi-quadratic B-spline Surface;

[0046]FIG. 6 shows a plan view of a section of a height map beinginterpreted as a bi-quadratic B-spline surface;

[0047]FIG. 7 shows an overview of a hardware system embodying theinvention with modifications to support normal generation from heightmaps;

[0048]FIG. 8a shows the results of bumping mapping using Blinn's heightmap derivative function, while FIG. 8b shows the function used by apreferred embodiment; and

[0049]FIG. 9 shows some alternative filter patterns that could be usedfor computing derivatives of a bump map.

DETAILED DESCRIPTION OF PREFERRED EMBODIMENT

[0050] The preferred embodiment will now be described. Access isprovided to height map textures, which store an array of height values,using preferably 4 or 8 bits per texel. Each value will encode afixed-point number with some number of fraction bits—preferably ¼ of thebits will be assigned to the fractional part.

[0051] The embodiment fits a bi-quadratic B-spline through this set ofpoints, thus giving the virtual height map texture C1 continuity (i.e.continuous first derivatives). In FIG. 5, the points ‘80’, ‘81’, and‘82’ represent three adjacent height values/control points in a row ofthe height map. The value in the texture is allocated (preferably) tothe y dimension while the other coordinate values (i.e., x and z) areimplicitly defined by the texel's coordinate position. Alternativeembodiments may assign these dimensions in some other permutation. Theother control points needed for the surface in the texel region areshown, in plan form, in FIG. 6.

[0052] The manner in which the normal is computed is now described withreference to FIG. 7. As with the standard texture filtering systemdescribed above, i.e. FIGS. 4a and 4 b, it is assumed that the texturebase coordinates to which the texture is to be applied will becalculated and supplied as before, at ‘50’. Modified address unit ‘150’then computes the ‘base’ texture coordinate, ‘53’, and blend factors‘55’, in a manner that is similar to the prior art method described withreference to FIG. 4a, except that step ‘51’, the typical subtraction ofa half-texel dimension, is bypassed when performing height map bumpmapping.

[0053] A modified texel fetch unit, ‘151’, which in FIG. 4b consisted ofunits ‘60’ thru ‘63’ which obtained four sets of RGBA vectors, isenhanced to be able to fetch a 3×3 set of scalar height values. Inparticular, it retrieves the following grid of height texels:$\begin{bmatrix}( {{U_{i} - 1},{V_{j} - 1}} ) & ( {U_{i},{V_{j} - 1}} ) & ( {{U_{i} + 1},{V_{j} - 1}} ) \\( {{U_{i} - 1},V_{j}} ) & ( {U_{i},V_{j}} ) & ( {{U_{i} + 1},V_{j}} ) \\( {{U_{i} - 1},{V_{j} + 1}} ) & ( {U_{i},{V_{j} + 1}} ) & ( {{U_{i} + 1},{V_{j} + 1}} )\end{bmatrix} = \begin{bmatrix}a & b & c \\d & e & f \\g & h & k\end{bmatrix}$

[0054] For brevity, these have be renumbered a, b, etc.

[0055] It will be apparent to those skilled in the art that, withapplication of the address-bit interleaved texture storage formatdescribed in our British patent number GB2297886, such a height-map canbe packed into the ‘equivalent’, in terms of storage, of a colourtexture of ½×½ resolution of the height map. Each 2×2 group of scalarheight data would occupy the space of a single four-dimensional colour.With such a format, the height map data can then be accessed using avery simple modification of exactly the same fetch mechanism used byunits ‘60’ thru ‘63’ in FIG. 4a.

[0056] The 3×3 grid of samples is then fed into the ‘Replicate’ unit,152, which outputs values to the Red, Green, Blue, and Alpha bilinearunits. In particular, the Red channel receives the top left grid of 2×2scalar values, i.e. those fetched from . . . $\begin{bmatrix}a & b \\d & e\end{bmatrix}\quad$

[0057] . . . while similarly the green channel receives the top rightset, the blue, the bottom left, and the alpha receives the bottom right.Clearly some values, such as b′ or e′, will be used more than once, thusthe grids supplied to each unit overlap at least partially.

[0058] Unit 153 takes the blend factors, ‘55’, and computes new sets ofU and V blends as follows: $\begin{matrix}{{Ublend}_{0} = {\frac{1}{2} + \frac{Ublend}{2}}} \\{{Ublend}_{1} = \frac{Ublend}{2}} \\{{Vblend}_{0} = {\frac{1}{2} + \frac{Vblend}{2}}} \\{{Vblend}_{1} = \frac{Vblend}{2}}\end{matrix}$

[0059] As Ublend and Vblend are typically fixed point numbers, it shouldbe appreciated that these ‘calculations’ are completely trivial andincur no cost at all in hardware.

[0060] These new blend values are distributed to bilinear units, ‘65’thru ‘68’ as follows: Red: (Ublend0, Vblend0) Green: (Ublend1, Vblend0)Blue: (Ublend0, Vblend1) Alpha: (Ublend1, Vblend1)

[0061] This manipulation of the blend factors eliminates the need toconvert from the quadratic B-spline control points to the Bezier controlpoints, as described previously in Equation 1. These bilinear unitstherefore effectively produce data which will enable surface normalswith C1 continuity to subsequently be derived.

[0062] The results of the 4 bilinear interpolations are fed to thetangent construction unit, 155. This generates two tangent vectors,Tang1 and Tang2, which are functionally equivalent to using thefollowing calculations:

[0063] Tang1[X]:=1 Texturesize;

[0064] Tang1[Y]:=LinearInterpolate(VBlend,

[0065] GreenResult−RedResult,

[0066] AlphaResult−BlueResult);

[0067] Tang1[Z]:=0;

[0068] Tang2[X]:=0;

[0069] Tang2[Y]:=LinearInterpolate(UBlend,

[0070] BlueResult−RedResult,

[0071] AlphaResult−GreenResult);

[0072] Tang2[Z]:=1 Texturesize

[0073] where

[0074] LinearInterpolate (x, A, B):=A+x*(B−A);

[0075] For reasons that will soon be apparent, unit 155 actually onlyoutputs three values: Tang1[y], Tang2[y] and 1 Texturesize.

[0076] Finally, in unit ‘156’, the cross product of these tangents iscomputed. It should be noted that if the preferred embodiment is chosen,the presence of zeros in the tangent components simplifies the crossproduct to the following calculation:

[0077] N[x]:=Tang1[y];

[0078] N[y]:=1 Texturesize

[0079] N[z]:=Tang2[y];

[0080] This vector is then normalised, preferably by squaring the Nvector, computing the inverse of the square root of the result, andmultiplying that scalar by the original components. The normalisationstep may appear expensive, but it would be a requirement of any systemthat supported compressed normal maps, such as that described inWO9909523 or British patent application No. 0216668.4. Thus, if suchtexture formats were already supported, the re-normalisation hardwarewould be reused. An example of the output of this embodiment is shown inFIG. 8b.

[0081] In an alternative embodiment, trilinear filtering can be adaptedto support normal generation—the only difference in procedure will bethat the values fed into tangent construction unit ‘155’ will be a‘blend’ of the values computed from two adjacent MIP map levels chosen.Other embodiments supporting improved anisotropic filtering are alsofeasible.

[0082] In another embodiment, an interpolated scale factor may beapplied to the deltas/tangents before normalisation so that a height mapcan be scaled differently for different models or different parts of thesame model.

[0083] In another embodiment, the blend factor adjust unit, 153, is notused and the B-spline control points are converted to the equivalentBezier representations according to Equation 1 in a modified ‘152’ unit.

[0084] In another embodiment, the actual interpolated height value wouldbe computed by including a third linear blending operation.

[0085] In another embodiment, Blinn's height interpolation functioncould be employed. In this embodiment, the blend factor adjust unit,153, is not used and it is unnecessary to use the bilinear ‘alpha’channel. That also implies that it is unnecessary to fetch source texel‘k’. The tangent unit, 155, then simplifies to compute the difference of‘green’ and ‘red’ and the difference of ‘blue’ and ‘red’.

[0086] In another alternative embodiment, dedicated sampling hardwarecould be included that takes numerous texture samples and applies analternative derivative filter such as 4 taps, Sobel, Prewitt,Parks-McClellan derivatives filters as represented in FIG. 9.

[0087] In another embodiment, colour textures are also filtered usingbi-quadratic B-splines, either through the addition of bilinearfiltering units, or by iterations through the colour channels, wherebythe individual weights to the bilinear units are adjusted according tothe previously described embodiments.

1. A method for generating bump map data substantially in real time foruse in a 3-dimensional computer graphics system comprising the steps of:receiving data defining an area to which a texture is to be applied;receiving texture data to apply to the area, the data including surfaceheight data; filtering each of a set of partially overlapping samples ofthe texture data; deriving surface tangent vectors from the filteredsamples; and deriving a bump map surface normal from the surface tangentvectors.
 2. A method according to claim 1 in which the tangent vectorsare defined in local tangent space.
 3. A method according to claim 1, inwhich the filtering step includes the step of using bi-quadraticB-splines to model a height surface from the surface height data.
 4. Amethod according to claim 1, in which the filtering step includes thestep of using existing hardware in the colour channels of the 3Dgraphics system to filter the overlapping samples of texture data.
 5. Amethod according to claim 3 in which the filtering step is modified withblending factors.
 6. Apparatus for generating bump map datasubstantially in real time for use in a 3-dimensional computer graphicssystem comprising: means for receiving data defining an area to which atexture is to be applied; means for receiving texture data to apply tothe area, the data including height data; means for filtering each of aset of partially overlapping samples of the texture data; means forderiving surface tangent vectors from the filtered samples; and meansfor deriving a bump map surface normal from the surface tangent vectors.7. Apparatus according to claim 6 in which the step of tangent vectorsare defined in local tangent space.
 8. Apparatus according to claim 6 inwhich the filtering means comprises a means to use bi-quadraticB-splines to model height surface from the surface height data. 9.Apparatus according to claim 6, in which the filtering means includesmeans to use existing hardware in the colour channels of the 3D graphicssystem to filter the overlapping samples of texture data.
 10. Apparatusaccording to claim 8 in which the filtering modifies the filtering withblending factors.
 11. A 3D graphics system comprising a plurality ofcolour data processing means for generating data for use in shading animage to be represented by the 3D graphics system; means for supplyingtexture data to be applied to the image; and means for assigning thecolour data processing means to the generation of bump map data for usein applying the texture data to the image.
 12. (Cancelled). 13.(Cancelled).
 14. A method for generating bump map data for use in a3-dimensional computer graphics system comprising the steps of:receiving data defining an area to which a texture is to be applied;receiving texture data to apply to the area, the data including surfaceheight data; filtering each of a set of partially overlapping samples ofthe texture data; deriving surface tangent vectors from the filteredsamples; and deriving a bump map surface normal from the surface tangentvectors.
 15. Apparatus for generating bump map data for use in a3-dimensional computer graphics system comprising: means for receivingdata defining an area to which a texture is to be applied; means forreceiving texture data to apply to the area, the data including heightdata; means for filtering each of a set of partially overlapping samplesof the texture data; means for deriving surface tangent vectors from thefiltered samples; and means for deriving a bump map surface normal fromthe surface tangent vectors.